package com.shoppingmall.commons;

import lombok.Getter;

@Getter
public final class Result {
    private Boolean success;//是否成功，true表示成功，false表示失败(默认值)
    private int statusCode;//状态码
    private String message;//消息
    private Object data;//附加数据
    //构造方法私有化
    private Result(Boolean success, int statusCode, String message, Object data) {
        this.success = success;
        this.statusCode = statusCode;
        this.message = message;
        this.data = data;
    }

    /**
     * 默认成功的方法
     * @return
     */
    public static Result success(){
        return new Result(true,200,null,null);
    }

    /**
     * 带有消息的成功方法
     * @param message
     * @return
     */
    public static Result success(String message){
        return new Result(true,200,message,null);
    }


    /**
     * 带有消息和附加数据的成功方法
     * @param message
     * @return
     */
    public static Result success(String message,Object data){
        return new Result(true,200,message,data);
    }



    /**
     * 默认失败的方法
     * @return
     */
    public static Result fail(int statusCode){
        return new Result(false,statusCode,null,null);
    }

    /**
     * 带有消息的失败的方法
     * @return
     */
    public static Result fail(int statusCode,String message){
        return new Result(false,statusCode,message,null);
    }

    /**
     * 带有消息和附加数据的失败的方法
     * @return
     */
    public static Result fail(int statusCode,String message,Object data){
        return new Result(false,statusCode,message,data);
    }
}
